#include <iostream>
#include <fstream>
#include "tamagoshi.h"

using namespace std;

///////////////////////////// PERSONNAGE /////////////////////////////

typedef enum Meteo 
{ 
	SOLEIL = 0 ,
 	PLUIE = 1 ,
  	NEIGE = 2
}Meteo;


Personnage::Personnage()
{

}

Personnage::Personnage(string nom)
{
	this->nom = nom ; 
	this->appetit = 100 ; 
	this->hygiene = 50 ;
	this->sante = 100 ; 
	this->repos = 50 ;
	this->humeur = 50 ;
	this->dodo = 0 ; 
}

void Personnage::nourrir(int x)
{
	if(gameOver() == 1)
	{
		this->appetit += x ; 
		cout << this->nom << " a été nourri " << endl ; 
		if(this->appetit > 100)
		{
			this->appetit = 100 ; 
			this->sante -= 10 ; 
			this->humeur -= 10 ; 
			cout << this->nom << " a été trop nourri, sa santé et son humeur diminue !" << endl ;
		}
	}	
}

void Personnage::laver(int x)
{
	if(gameOver() == 1)
	{
		this->hygiene += x ; 
		cout << this->nom << " a été lavé " << endl ; 
		this->humeur += 10 ; 

		if(this->hygiene > 100)
			this->hygiene = 100 ; 
	}	
}

void Personnage::seReposer()
{
	if(gameOver() == 1)
	{
		this->dodo = 1 ;
		if(this->repos >= 100)
		{
			this->dodo = 0 ;
		}
		while(this->dodo != 0 )
			{
				this->repos += 10 ;
				if(this->repos >= 100)
					this->dodo = 0 ;
			}

		this->humeur += 10 ; 
	}
}

void Personnage::seReveiller()
{
	this->dodo = 0 ; 
}

int Personnage::get_sante()
{
	return this->sante ; 
}

int Personnage::get_hygiene()
{
	return this->hygiene ; 
}

int Personnage::get_fatigue()
{
	return this->repos ; 
}

int Personnage::get_appetit()
{
	return this->appetit ; 
}
int Personnage::get_humeur()
{
	return this->humeur ; 
}

string Personnage::get_nom()
{
	return this->nom ; 
}

bool Personnage::gameOver()
{
	if(this->appetit == 0 && this->sante == 0 && this->humeur == 0 && this->repos == 0)
	{
		cout << this->nom << " est mort " << endl ;
		return 0 ;
	}

	else return 1 ;
}

Environnement::Environnement()
{
    this->meteo = this ->heure = this->id = this->taille = 0 ;
}

Environnement::Environnement(int id)
{
    this->meteo = SOLEIL;
    this->heure = 10;
    this->id = id ;
    this->taille = 0 ;
}
int Environnement::get_heure ()
{
    return this->heure;
}

int Environnement::get_meteo ()
{
    return this->meteo;
}

bool Environnement::sauvegarder ()
{
    ofstream filesave("save.txt", ios::out|ios::trunc) ;

    if(filesave)
    {
        filesave << id << meteo << heure << endl ;

        for(int i = 0 ; i <= taille  ; i++ )
        {
            filesave << tab[i].get_nom() << tab[i].get_appetit() << tab[i].get_hygiene() << tab[i].get_sante() << tab[i].get_fatigue() << tab[i].get_humeur() ;
        }

        cout << "sauvegarde effectuee" << endl ;
    }

    filesave.close();
}

Personnage Environnement::adopter(string nom)
{
    Personnage* A = new Personnage(nom) ;
    tab[taille] = *A ;
    taille++ ;
}

Personnage Environnement ::get_tab(int x)
{
    return tab[x] ;
}


bool Environnement::effacer ()
{

}
void Environnement::set_heure (int heure)
{

}
void Environnement::set_meteo ()
{

}


Jeu::Jeu ()
{
	ifstream save("sav.tam", ios::in);
	if(save)
	{
		
	}
	save.close();
}
Environnement Jeu::charger (int id)
{

}
bool Jeu::effacer (int id)
{

}
Environnement Jeu::nouveau (int id)
{

}
